{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Examples and Exercises from Think Stats, 2nd Edition\n",
    "\n",
    "http://thinkstats2.com\n",
    "\n",
    "Copyright 2016 Allen B. Downey\n",
    "\n",
    "MIT License: https://opensource.org/licenses/MIT\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from __future__ import print_function, division\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import random\n",
    "\n",
    "import thinkstats2\n",
    "import thinkplot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Analytic methods\n",
    "\n",
    "If we know the parameters of the sampling distribution, we can compute confidence intervals and p-values analytically, which is computationally faster than resampling."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy.stats\n",
    "\n",
    "def EvalNormalCdfInverse(p, mu=0, sigma=1):\n",
    "    return scipy.stats.norm.ppf(p, loc=mu, scale=sigma)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the confidence interval for the estimated mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "85.88786593262132"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "EvalNormalCdfInverse(0.05, mu=90, sigma=2.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "94.11213406737868"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "EvalNormalCdfInverse(0.95, mu=90, sigma=2.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`normal.py` provides a `Normal` class that encapsulates what we know about arithmetic operations on normal distributions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Normal(90, 56.25)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from normal import Normal\n",
    "\n",
    "dist = Normal(90, 7.5**2)\n",
    "dist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can use it to compute the sampling distribution of the mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.5"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dist_xbar = dist.Sum(9) / 9\n",
    "dist_xbar.sigma"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then compute a confidence interval."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(85.88786593262132, 94.11213406737868)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dist_xbar.Percentile(5), dist_xbar.Percentile(95)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Central Limit Theorem\n",
    "\n",
    "If you add up independent variates from a distribution with finite mean and variance, the sum converges on a normal distribution.\n",
    "\n",
    "The following function generates samples with difference sizes from an exponential distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def MakeExpoSamples(beta=2.0, iters=1000):\n",
    "    \"\"\"Generates samples from an exponential distribution.\n",
    "\n",
    "    beta: parameter\n",
    "    iters: number of samples to generate for each size\n",
    "\n",
    "    returns: list of samples\n",
    "    \"\"\"\n",
    "    samples = []\n",
    "    for n in [1, 10, 100]:\n",
    "        sample = [np.sum(np.random.exponential(beta, n))\n",
    "                  for _ in range(iters)]\n",
    "        samples.append((n, sample))\n",
    "    return samples"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This function generates normal probability plots for samples with various sizes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def NormalPlotSamples(samples, plot=1, ylabel=''):\n",
    "    \"\"\"Makes normal probability plots for samples.\n",
    "\n",
    "    samples: list of samples\n",
    "    label: string\n",
    "    \"\"\"\n",
    "    for n, sample in samples:\n",
    "        thinkplot.SubPlot(plot)\n",
    "        thinkstats2.NormalProbabilityPlot(sample)\n",
    "\n",
    "        thinkplot.Config(title='n=%d' % n,\n",
    "                         legend=False,\n",
    "                         xticks=[],\n",
    "                         yticks=[],\n",
    "                         xlabel='random normal variate',\n",
    "                         ylabel=ylabel)\n",
    "        plot += 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following plot shows how the sum of exponential variates converges to normal as sample size increases."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/downey/anaconda3/envs/ModSimPy/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x720 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.PrePlot(num=3, rows=2, cols=3)\n",
    "samples = MakeExpoSamples()\n",
    "NormalPlotSamples(samples, plot=1,\n",
    "                  ylabel='sum of expo values')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The lognormal distribution has higher variance, so it requires a larger sample size before it converges to normal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def MakeLognormalSamples(mu=1.0, sigma=1.0, iters=1000):\n",
    "    \"\"\"Generates samples from a lognormal distribution.\n",
    "\n",
    "    mu: parmeter\n",
    "    sigma: parameter\n",
    "    iters: number of samples to generate for each size\n",
    "\n",
    "    returns: list of samples\n",
    "    \"\"\"\n",
    "    samples = []\n",
    "    for n in [1, 10, 100]:\n",
    "        sample = [np.sum(np.random.lognormal(mu, sigma, n))\n",
    "                  for _ in range(iters)]\n",
    "        samples.append((n, sample))\n",
    "    return samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/downey/anaconda3/envs/ModSimPy/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x720 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.PrePlot(num=3, rows=2, cols=3)\n",
    "samples = MakeLognormalSamples()\n",
    "NormalPlotSamples(samples, ylabel='sum of lognormal values')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Pareto distribution has infinite variance, and sometimes infinite mean, depending on the parameters.  It violates the requirements of the CLT and does not generally converge to normal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def MakeParetoSamples(alpha=1.0, iters=1000):\n",
    "    \"\"\"Generates samples from a Pareto distribution.\n",
    "\n",
    "    alpha: parameter\n",
    "    iters: number of samples to generate for each size\n",
    "\n",
    "    returns: list of samples\n",
    "    \"\"\"\n",
    "    samples = []\n",
    "\n",
    "    for n in [1, 10, 100]:\n",
    "        sample = [np.sum(np.random.pareto(alpha, n))\n",
    "                  for _ in range(iters)]\n",
    "        samples.append((n, sample))\n",
    "    return samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/downey/anaconda3/envs/ModSimPy/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x720 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.PrePlot(num=3, rows=2, cols=3)\n",
    "samples = MakeParetoSamples()\n",
    "NormalPlotSamples(samples, ylabel='sum of Pareto values')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If the random variates are correlated, that also violates the CLT, so the sums don't generally converge.\n",
    "\n",
    "To generate correlated values, we generate correlated normal values and then transform to whatever distribution we want."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def GenerateCorrelated(rho, n):\n",
    "    \"\"\"Generates a sequence of correlated values from a standard normal dist.\n",
    "    \n",
    "    rho: coefficient of correlation\n",
    "    n: length of sequence\n",
    "\n",
    "    returns: iterator\n",
    "    \"\"\"\n",
    "    x = random.gauss(0, 1)\n",
    "    yield x\n",
    "\n",
    "    sigma = np.sqrt(1 - rho**2)\n",
    "    for _ in range(n-1):\n",
    "        x = random.gauss(x * rho, sigma)\n",
    "        yield x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def GenerateExpoCorrelated(rho, n):\n",
    "    \"\"\"Generates a sequence of correlated values from an exponential dist.\n",
    "\n",
    "    rho: coefficient of correlation\n",
    "    n: length of sequence\n",
    "\n",
    "    returns: NumPy array\n",
    "    \"\"\"\n",
    "    normal = list(GenerateCorrelated(rho, n))\n",
    "    uniform = scipy.stats.norm.cdf(normal)\n",
    "    expo = scipy.stats.expon.ppf(uniform)\n",
    "    return expo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def MakeCorrelatedSamples(rho=0.9, iters=1000):\n",
    "    \"\"\"Generates samples from a correlated exponential distribution.\n",
    "\n",
    "    rho: correlation\n",
    "    iters: number of samples to generate for each size\n",
    "\n",
    "    returns: list of samples\n",
    "    \"\"\"    \n",
    "    samples = []\n",
    "    for n in [1, 10, 100]:\n",
    "        sample = [np.sum(GenerateExpoCorrelated(rho, n))\n",
    "                  for _ in range(iters)]\n",
    "        samples.append((n, sample))\n",
    "    return samples\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/downey/anaconda3/envs/ModSimPy/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
      "  warnings.warn(message, mplDeprecation, stacklevel=1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x720 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.PrePlot(num=3, rows=2, cols=3)\n",
    "samples = MakeCorrelatedSamples()\n",
    "NormalPlotSamples(samples, ylabel='sum of correlated exponential values')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Difference in means\n",
    "\n",
    "Let's use analytic methods to compute a CI and p-value for an observed difference in means.\n",
    "\n",
    "The distribution of pregnancy length is not normal, but it has finite mean and variance, so the sum (or mean) of a few thousand samples is very close to normal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.07803726677754952"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import first\n",
    "\n",
    "live, firsts, others = first.MakeFrames()\n",
    "delta = firsts.prglngth.mean() - others.prglngth.mean()\n",
    "delta"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following function computes the sampling distribution of the mean for a set of values and a given sample size."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def SamplingDistMean(data, n):\n",
    "    \"\"\"Computes the sampling distribution of the mean.\n",
    "\n",
    "    data: sequence of values representing the population\n",
    "    n: sample size\n",
    "\n",
    "    returns: Normal object\n",
    "    \"\"\"\n",
    "    mean, var = data.mean(), data.var()\n",
    "    dist = Normal(mean, var)\n",
    "    return dist.Sum(n) / n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here are the sampling distributions for the means of the two groups under the null hypothesis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "dist1 = SamplingDistMean(live.prglngth, len(firsts))\n",
    "dist2 = SamplingDistMean(live.prglngth, len(others))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the sampling distribution for the difference in means."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Normal(90, 56.25)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dist_diff = dist1 - dist2\n",
    "dist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Under the null hypothesis, here's the chance of exceeding the observed difference."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.08377070425543787"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1 - dist_diff.Prob(delta)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the chance of falling below the negated difference."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.08377070425543781"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dist_diff.Prob(-delta)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The sum of these probabilities is the two-sided p-value."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Testing a correlation\n",
    "\n",
    "Under the null hypothesis (that there is no correlation), the sampling distribution of the observed correlation (suitably transformed) is a \"Student t\" distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def StudentCdf(n):\n",
    "    \"\"\"Computes the CDF correlations from uncorrelated variables.\n",
    "\n",
    "    n: sample size\n",
    "\n",
    "    returns: Cdf\n",
    "    \"\"\"\n",
    "    ts = np.linspace(-3, 3, 101)\n",
    "    ps = scipy.stats.t.cdf(ts, df=n-2)\n",
    "    rs = ts / np.sqrt(n - 2 + ts**2)\n",
    "    return thinkstats2.Cdf(rs, ps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following is a `HypothesisTest` that uses permutation to estimate the sampling distribution of a correlation. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "import hypothesis\n",
    "\n",
    "class CorrelationPermute(hypothesis.CorrelationPermute):\n",
    "    \"\"\"Tests correlations by permutation.\"\"\"\n",
    "\n",
    "    def TestStatistic(self, data):\n",
    "        \"\"\"Computes the test statistic.\n",
    "\n",
    "        data: tuple of xs and ys\n",
    "        \"\"\"\n",
    "        xs, ys = data\n",
    "        return np.corrcoef(xs, ys)[0][1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can estimate the sampling distribution by permutation and compare it to the Student t distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ResampleCorrelations(live):\n",
    "    \"\"\"Tests the correlation between birth weight and mother's age.\n",
    "\n",
    "    live: DataFrame for live births\n",
    "\n",
    "    returns: sample size, observed correlation, CDF of resampled correlations\n",
    "    \"\"\"\n",
    "    live2 = live.dropna(subset=['agepreg', 'totalwgt_lb'])\n",
    "    data = live2.agepreg.values, live2.totalwgt_lb.values\n",
    "    ht = CorrelationPermute(data)\n",
    "    p_value = ht.PValue()\n",
    "    return len(live2), ht.actual, ht.test_cdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n, r, cdf = ResampleCorrelations(live)\n",
    "\n",
    "model = StudentCdf(n)\n",
    "thinkplot.Plot(model.xs, model.ps, color='gray',\n",
    "               alpha=0.5, label='Student t')\n",
    "thinkplot.Cdf(cdf, label='sample')\n",
    "\n",
    "thinkplot.Config(xlabel='correlation',\n",
    "                 ylabel='CDF',\n",
    "                 legend=True, loc='lower right')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That confirms the analytic result.  Now we can use the CDF of the Student t distribution to compute a p-value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.06883397035410904 2.861466619208386e-11\n"
     ]
    }
   ],
   "source": [
    "t = r * np.sqrt((n-2) / (1-r**2))\n",
    "p_value = 1 - scipy.stats.t.cdf(t, df=n-2)\n",
    "print(r, p_value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Chi-squared test\n",
    "\n",
    "The reason the chi-squared statistic is useful is that we can compute its distribution under the null hypothesis analytically."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ChiSquaredCdf(n):\n",
    "    \"\"\"Discrete approximation of the chi-squared CDF with df=n-1.\n",
    "\n",
    "    n: sample size\n",
    "    \n",
    "    returns: Cdf\n",
    "    \"\"\"\n",
    "    xs = np.linspace(0, 25, 101)\n",
    "    ps = scipy.stats.chi2.cdf(xs, df=n-1)\n",
    "    return thinkstats2.Cdf(xs, ps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Again, we can confirm the analytic result by comparing values generated by simulation with the analytic distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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v06TRX9yd9w9mMFYCGop7IZUKsW9C5fnlMcuo6JcXUYixeauu+7iiCOO4Mgjj+TSSy8N9i9evJiPf/zjHHjggUEiWLNmDZMmTdrpHOvXr+fkk0/mqKOOYtKkSTz77LMA3HHHHRx88MGccsopzJgxg6uvvhrYuSVSWVkJQFNTE6eddhpTpkxh8uTJzJ8/P3jeQw89lC9/+ctMmTKFtWvX8sQTT3DCCScwZcoULrjggmCG48KFCznkkEM46aSTeOCBB0L4iamlsFu2bt1KayJT0iISiVA5rEJdRiLdWLlyZWjn/tjHPtbp/hUrVvD973+fJUuWMHr06OB6Ish80D/33HO8/fbbnHvuud12G91zzz18+tOf5oYbbiCVStHc3Mz69ev57ne/y/Llyxk5ciSf+MQnOProo7uNs6KiggcffJARI0awefNmjj/+eM49N7OKwMqVK7njjjv45S9/yebNm/ne977HU089xbBhw/jhD3/IT3/6U775zW8yY8YMqqur+ehHP8qFF164Gz+tnikp7KJUKpVX+K6Me275pwJGJCKdqa6uZvr06YwePRqAvffeO7jvvPPOIxKJcNhhh7Fhw4Zuz3PMMcfwpS99iba2Ns477zyOOuoonn76aU499VTalwe+8MILWbVqVbfncXe+/e1vs3jxYiKRCO+//37w3B/5yEc4/vjjAVi6dClvvvkmJ554IpC5FuqEE07g7bffZsKECUycOBGASy65hJkzZ+7GT6Z7Sgq7qK6ujlQqBbSXx9aPUKQYuXuXM3HKy8s7HNedk08+mcWLF/Poo49y6aWXcu211zJixIguzx2LxYIS+u5OIpEA4O6772bTpk0sX76ceDzO+PHjgwv7hg0b1iGe008/ndmzZ3c47yuvvNIvs7n0ibYLksnkTq0EzbgT6VlXXTxhOu200/jc5z7HNddcw6hRo/jggw86tBZ667333mP//fdnxowZbNu2jZdeeonrrruOr33ta2zZsoURI0Zw3333ceSRRwIwfvx4li9fzuc//3nmz58fVE+ur69n3333JR6Ps2jRIt57771On+/444/nK1/5CqtXr+ajH/0ozc3N1NbWcsghh/CXv/yFd955h4MOOminpNFXlBR2wd3zn2Pek69kr0tQK0GkmB1++OHccMMNnHLKKUSjUY4++mhmzZq1y+d55plnuOWWW4jH41RWVnLXXXcxZswYbrrpJk444QTGjBnDlClTgh6EGTNmMG3aNI499lhOO+20oBXwhS98gc9+9rNMnTqVo446ikMOOaTT59tnn32YNWsWF198Ma2trQB873vf4+CDD2bmzJmcffbZjB49mpNOOok33nhj93443bCemk7FZurUqV5TU9Pvz9vS0sIFX/9VMOOoomIIsViU8rK4SlqIdOKtt97i0EMPLXQY/WLWrFnU1NTwi1/8otChAJ3/7M1subv3OCNGU1J7aePGjUFCiEZjQULQrCMRGUzU/9ELcx5dyt0PLw22y8vLdKGaiAQuv/xyLr/88kKH0SfUUuhBOp1m9qMv5FyoFmdIRXkPjxIRGZiUFHqwceNGWlp3rL08vHKYuoxEZNBS91EX5le/yt0PL6W+oTHYV1ZWzuwf60I1ERm81FLowpyqZTQ0NgXbsViMymFaL0FEBjclhS40NDYFVzqaGSOGV6rbSES6dOqpp1KI6fJ9Td1Hndi8eTPJZDLYnvffVwWVDkVEBjO1FPLMfuRPfPE7fwi2269iFJGBZ9u2bZx99tkceeSRTJo0iblz53LzzTdzzDHHMGnSJK688sqgR+DUU0/lmmuu4eSTT+bQQw9l2bJlnH/++UycOJHvfOc7QKbM9SGHHMJll13GEUccwfTp02lubt7pebsqfT0QqKWQY9u2bcx+5MWci9SijBg+rIdHiUhP/v5rvwrt3N1dM7Rw4UL2228/Hn30USBTf+j000/nxhtvBODSSy/lkUce4bOf/SwAZWVlLF68mFtvvZVp06axfPly9t57bw466CCuueYaIFPm+re//S0nnngiX/rSl/jlL3/JN77xjeA5uyp93f6cxU4thay6ujref/99WrMJIRKJ8qERw7nwrGMKHJmI7K7Jkyfz1FNPcd111/Hss88ycuRIFi1axHHHHcfkyZOprq5mxYoVwfHt6xtMnjyZww8/nDFjxlBeXs6BBx7I2rVrARg3blxQ1vqSSy7hueee6/CcuaWvjzrqKO68884ui98Vo1BbCmZ2JnArEAV+4+4/yLu/HLgL+FtgC3Chu68JM6Z86XSaDRs28NBTL1O1ZFU2rggVFRXco+mnIgPawQcfzPLly6mqquJb3/oWZ5xxBrfddhs1NTWMGzeOm266KShfDTtKakcikQ7ltSORSDDOmF++On+7q9LXA0VoScHM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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = [8, 9, 19, 5, 8, 11]\n",
    "dt = hypothesis.DiceChiTest(data)\n",
    "p_value = dt.PValue(iters=1000)\n",
    "n, chi2, cdf = len(data), dt.actual, dt.test_cdf\n",
    "\n",
    "model = ChiSquaredCdf(n)\n",
    "thinkplot.Plot(model.xs, model.ps, color='gray',\n",
    "                   alpha=0.3, label='chi squared')\n",
    "thinkplot.Cdf(cdf, label='sample')\n",
    "\n",
    "thinkplot.Config(xlabel='chi-squared statistic',\n",
    "                 ylabel='CDF',\n",
    "                 loc='lower right')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "And then we can use the analytic distribution to compute p-values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11.6 0.04069938850404997\n"
     ]
    }
   ],
   "source": [
    "p_value = 1 - scipy.stats.chi2.cdf(chi2, df=n-1)\n",
    "print(chi2, p_value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Exercises"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "**Exercise:**    In Section 5.4, we saw that the distribution of adult weights is approximately lognormal. One possible explanation is that the weight a person gains each year is proportional to their current weight. In that case, adult weight is the product of a large number of multiplicative factors:\n",
    "\n",
    "w = w0 f1 f2 ... fn  \n",
    "\n",
    "where w is adult weight, w0 is birth weight, and fi is the weight gain factor for year i.\n",
    "\n",
    "The log of a product is the sum of the logs of the factors:\n",
    "\n",
    "logw = logw0 + logf1 + logf2 + ... + logfn \n",
    "\n",
    "So by the Central Limit Theorem, the distribution of logw is approximately normal for large n, which implies that the distribution of w is lognormal.\n",
    "\n",
    "To model this phenomenon, choose a distribution for f that seems reasonable, then generate a sample of adult weights by choosing a random value from the distribution of birth weights, choosing a sequence of factors from the distribution of f, and computing the product. What value of n is needed to converge to a lognormal distribution?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise:** In Section 14.6 we used the Central Limit Theorem to find the sampling distribution of the difference in means, δ, under the null hypothesis that both samples are drawn from the same population.\n",
    "\n",
    "We can also use this distribution to find the standard error of the estimate and confidence intervals, but that would only be approximately correct. To be more precise, we should compute the sampling distribution of δ under the alternate hypothesis that the samples are drawn from different populations.\n",
    "\n",
    "Compute this distribution and use it to calculate the standard error and a 90% confidence interval for the difference in means."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise:** [In a recent paper](http://ieeexplore.ieee.org/document/7044435/), Stein et al. investigate the effects of an intervention intended to mitigate gender-stereotypical task allocation within student engineering teams.\n",
    "\n",
    "Before and after the intervention, students responded to a survey that asked them to rate their contribution to each aspect of class projects on a 7-point scale.\n",
    "\n",
    "Before the intervention, male students reported higher scores for the programming aspect of the project than female students; on average men reported a score of 3.57 with standard error 0.28. Women reported 1.91, on average, with standard error 0.32.\n",
    "\n",
    "Compute the sampling distribution of the gender gap (the difference in means), and test whether it is statistically significant. Because you are given standard errors for the estimated means, you don’t need to know the sample size to figure out the sampling distributions.\n",
    "\n",
    "After the intervention, the gender gap was smaller: the average score for men was 3.44 (SE 0.16); the average score for women was 3.18 (SE 0.16). Again, compute the sampling distribution of the gender gap and test it.\n",
    "\n",
    "Finally, estimate the change in gender gap; what is the sampling distribution of this change, and is it statistically significant?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Solution goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
